package com.ict.web.service;


import com.baomidou.mybatisplus.extension.service.IService;
import com.github.pagehelper.PageInfo;
import com.ict.common.core.domain.AjaxResult;
import com.ict.common.core.page.TableDataInfo;
import com.ict.web.controller.file.domain.YzqFile;
import com.ict.web.domain.AnnualProjectPlan;
import com.ict.web.dto.AnnualProjectPlanAddDto;
import com.ict.web.dto.AnnualProjectPlanEditDto;
import com.ict.web.dto.AnnualProjectPlanListDto;
import com.ict.web.dto.SelectPlanDto;
import com.ict.web.vo.AnnualProjectPlanDetailsVo;
import com.ict.web.vo.ProjectManagementListVo;
import com.ict.web.vo.YearVo;

import java.util.List;

/**
 * 年度项目计划Service接口
 *
 * @author ruoyi
 * @date 2022-02-14
 */
public interface IAnnualProjectPlanService extends IService<AnnualProjectPlan>
{
    /**
     * 查询年度项目计划
     *
     * @param planId 年度项目计划主键
     * @return 年度项目计划
     */
    public AnnualProjectPlanDetailsVo selectAnnualProjectPlanByPlanId(Long planId);

    /**
     * 查询年度项目计划列表
     *
     * @param dto 年度项目计划
     * @return 年度项目计划集合
     */
    public TableDataInfo selectAnnualProjectPlanList(AnnualProjectPlanListDto dto);

    /**
     * 查询年度计划对应的项目
     *
     * @param planId 年度项目计划
     * @return 结果
     */
    public List<ProjectManagementListVo> selectPlanNumber(Long planId);

    /**
     * 查询年度计划对应的项目(分页)
     *
     * @param selectPlanDto 年度项目计划
     * @return 结果
     */
    public PageInfo<ProjectManagementListVo> selectPlanNumberPage(SelectPlanDto selectPlanDto);

    /**
     * 新增年度项目计划
     *
     * @param dto 年度项目计划
     * @return 结果
     */
    public Long insertAnnualProjectPlan(AnnualProjectPlanAddDto dto);

    /**
     * 修改状态值，正在申报变暂停，暂停变正在申报
     *
     * @param planId 修改状态值，正在申报变暂停，暂停变正在申报
     * @return 结果
     */
    public int updateStag(Long planId);

    /**
     * 修改年度项目计划
     *
     * @param dto 年度项目计划
     * @return 结果
     */
    public int updateAnnualProjectPlan(AnnualProjectPlanEditDto dto,Long planId);

    /**
     * 删除年度项目计划信息
     *
     * @param planId 年度项目计划主键
     * @return 结果
     */
    public int deleteAnnualProjectPlanByPlanId(Long planId);
    /**
     * 查询当前是否有年度计划
     *
     * @return 结果
     */
    AnnualProjectPlan ifAnnualProject();
    /**
     * 获取年度计划年份
     *
     * @return 结果
     */
    List<YearVo> getYear();

    List<AnnualProjectPlan> getTimeList();

    /**
     * 上传专家审核结论
     * @param file
     * @param planId
     * @return
     */
    AjaxResult upload(YzqFile file, Long planId);

    /**
     * 删除上传专家审核结论
     * @param fileId
     * @return
     */
    boolean deleteFile(Long fileId);

    /**
     * 终止年度计划
     * @param planId
     * @return
     */
    int terminateAnnualPlan(Long planId);

    AjaxResult supplement2year(Long planId,Long proId);
    /**
     * 批量修改年度计划
     *
     * @param list
     * @return 结果
     */
    int batchUpdate(List<AnnualProjectPlan> list);
}
